package Leetcode.DataStructrue.BinaryTree;

/**
 * 226. 翻转二叉树
 *
 * 给你一棵二叉树的根节点 root ，翻转这棵二叉树，并返回其根节点。
 *
 * 示例 1：
 * 输入：root = [4,2,7,1,3,6,9]
 * 输出：[4,7,2,9,6,3,1]
 *
 * 示例 2：
 * 输入：root = [2,1,3]
 * 输出：[2,3,1]
 *
 * 示例 3：
 * 输入：root = []
 * 输出：[]
 *
 * 提示：
 * 树中节点数目范围在 [0, 100] 内
 * -100 <= Node.val <= 100
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/invert-binary-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

public class 翻转二叉树_226 {
//    public void change(TreeNode root){
//        if(root == null){
//            return;
//        }
//        TreeNode node = new TreeNode();
//        node = root.left;
//        root.left = root.right;
//        root.right = node;
//    }
//    public TreeNode invertTree(TreeNode root) {
//        if(root == null){
//            return root;
//        }
//        change(root);
//        invertTree(root.left);
//        invertTree(root.right);
//        return root;
//    }
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return null;
        }

        TreeNode leftSubTree = invertTree(root.left);
        TreeNode rightSubTree = invertTree(root.right);

        root.left = rightSubTree;
        root.right = leftSubTree;

        return root;
    }
}
